#!/usr/bin/python3
# -*- coding:UTF-8 -*-

#作品名称：冰枫蓝叶聊天女仆 - 答句库
#作者：冰枫火灵X
#许可证：GNU LGPL v3 or later


import os
import sys
import time
import libmaidtimer
import random
import libmaiderror

def main(us,namex,mn):

    #回答
    c=us
    if not os.access('dict.maid',os.F_OK):return ["词典文件“dict.maid”不存在","当前目录："+os.path.abspath('./')]
    maiddict = open('dict.maid','r',encoding='UTF-16')
    listmaid = maiddict.readlines()
    linenum = 1
    #print(listmaid)
    #使用字典前的指定回答
    if '几点了' in us:
        c='报告小主人，\\n现在'+libmaidtimer.tt()+'啦~'
        return c.split('\\n')
    if '现在时间' in us or '现在日期' in us or '现在是哪天' in us:
        c = str('报告小主人，\\n现在是'+libmaidtimer.fulltt())
        return c.split('\\n')
    if '今天周几' in us or '现在周几' in us or '今天星期几' in us or '现在星期几' in us:
        c = str('报告小主人，\\n今天是'+libmaidtimer.week()+'啦！')
        return c.split('\\n')
        
#字典查询和替换
    for maidcontent in listmaid:
        if maidcontent == "\n":
            linenum+=1
            continue
        if '#' in maidcontent:
            if maidcontent.index("#") == 0:
                linenum+=1
                continue
        elif len(maidcontent.split("::")) != 3:
                print('小主人，你的字典有一行格式错了哦！\n请查阅error.txt，编码方式：UTF-16\n修正错误之后再来找{:s}玩吧！\n字典路径：{:s}'.format(mn,os.path.abspath('./dict.maid')))
                libmaiderror.maid_error('字典格式错误','字典第{line:d}行数据格式错误，请按照：\nA（固定回复）或者R（替换文本）::被替换的文字（多个请用|隔开）::被替换后的文本（多个请用|隔开）的格式来写，注释请用#作为这一行的开头。'.format(line=linenum),0)
                linenum+=1
                time.sleep(3)
                exit()
        #print(maidcontent,len(maidcontent.split("::")))
        contentlist = maidcontent.split('::')
        mode = contentlist[0]
        wen = contentlist[1].format(mn=mn,namex=namex)
        da = contentlist[2].strip('\n').format(mn=mn,namex=namex)
        #print('--'+mode+'--'+wen+'--'+da)
        #print("||||"+c)
        if mode == 'R':
            for wenju in wen.split('|'):
                #print("||"+wenju)
                c = c.replace(wenju,random.choice(da.split('|')))
        
        elif mode == 'A':
            for wenju in wen.split('|'):
                if wenju in c:
                    #print(wenju)
                    c = random.choice(da.split('|'))
                    return c.split('\\n')
        linenum+=1

#如果这个问句不支持，女仆将会表示听不懂
    if us == c:
        c=c.replace(mn,'小主人，怎么啦？%s在这里哦！'%(mn)).replace(namex,'小主人，伱……').replace('我','伱').replace('你','莪')
    if us == c:
        cl=['“'+c+'”'+'是啥意思呀？'+mn+'没听明白呢～', '“'+c+'”？'+"这是什么？...",'喵...?“'+c+'”指的是什么呀？*歪头眨巴着水灵灵的大眼睛*']
        c=random.choice(cl)
        
    #如果没有使用指令，将会正常按照字典来返回值
    maiddict.close()
    return c.split('\\n')

if __name__ == '__main__':
    
    if len(sys.argv) == 2: 
        pr = str(main(sys.argv[1],'小主人','小女仆'))
            
    elif len(sys.argv) == 4:
        pr = str(main(sys.argv[1],sys.argv[2],sys.argv[3]))
    
    else:
        pr = '请设定完整参数<问句/主人名字/女仆名字>'

    print(str(pr))
    sys.exit(0)
